package ru.space_game.gui;

import static org.lwjgl.opengl.GL11.*;

//saucecode's text rendering in opengl 1.1
//edited by kadence.
//heavily edited by knarf2011.

public class SimpleText {

	public static void drawString(String s, int x, int y, int height) {
		float scale = height / 8f;
		glTranslatef(x, y, 0);
		glScalef(scale, scale, 1f);
		drawString(s, 0, 0);
		glScalef(1f / scale, 1f / scale, 1f);
		glTranslatef(0 - x, 0 - y, 0);
	}

	public static void drawString(String s, int x, int y) {
		s = s.toLowerCase();
		int startX = x;
		glBegin(GL_LINES);
		for (char c : s.toLowerCase().toCharArray()) {
			if (c == 'a') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 7, y - 4);
				x += 8;
			} else if (c == 'b') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y);
				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 7, y - 4);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 7, y - 5);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 5);
				x += 8;
			} else if (c == 'c') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y);
				glVertex2f(x + 6, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 6, y - 8);

				glVertex2f(x + 6, y);
				glVertex2f(x + 6, y - 2);

				glVertex2f(x + 6, y - 6);
				glVertex2f(x + 6, y - 8);

				x += 8;
			} else if (c == 'd') {
				glVertex2f(x + 7, y - 2);
				glVertex2f(x + 7, y - 6);

				glVertex2f(x + 5, y);
				glVertex2f(x + 2, y);
				glVertex2f(x + 5, y - 8);
				glVertex2f(x + 2, y - 8);

				glVertex2f(x + 5, y);
				glVertex2f(x + 7, y - 2);
				glVertex2f(x + 5, y - 8);
				glVertex2f(x + 7, y - 6);

				glVertex2f(x + 2, y);
				glVertex2f(x + 2, y - 8);

				x += 8;
			} else if (c == 'e') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 7, y - 0);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 6, y - 4);

				x += 8;
			} else if (c == 'f') {
				glVertex2f(x, y);
				glVertex2f(x, y - 8);

				glVertex2f(x, y - 8);
				glVertex2f(x + 6, y - 8);

				glVertex2f(x, y - 4);
				glVertex2f(x + 5, y - 4);

				x += 8;
			} else if (c == 'g') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 3);
				glVertex2f(x + 5, y - 3);
				glVertex2f(x + 7, y - 3);

				glVertex2f(x + 7, y - 6);
				glVertex2f(x + 7, y - 8);

				x += 8;
			} else if (c == 'h') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 7, y - 4);

				x += 8;
			} else if (c == 'i') {
				glVertex2f(x + 3, y);
				glVertex2f(x + 3, y - 8);

				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 5, y - 0);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 5, y - 8);

				x += 7;
			} else if (c == 'j') {
				glVertex2f(x + 6, y);
				glVertex2f(x + 6, y - 8);

				glVertex2f(x + 1, y);
				glVertex2f(x + 6, y - 0);

				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 2);
				x += 8;
			} else if (c == 'k') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 3);
				glVertex2f(x + 6, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 2.5f, y - 4.5f);
				x += 8;
			} else if (c == 'l') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y);
				glVertex2f(x + 6, y);

				x += 7;
			} else if (c == 'm') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 4, y - 5);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 4, y - 5);
				glVertex2f(x + 7, y - 8);

				x += 8;
			} else if (c == 'n') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 7);
				glVertex2f(x + 7, y - 1);
				x += 8;
			} else if (c == 'o') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 7, y - 0);

				x += 8;
			} else if (c == '0') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 7, y - 0);

				glVertex2f(x + 1, y - 1);
				glVertex2f(x + 7, y - 7);

				x += 8;
			} else if (c == 'p') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 6, y - 8);
				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 6, y - 4);

				glVertex2f(x + 6, y - 4);
				glVertex2f(x + 6, y - 8);
				x += 8;
			} else if (c == 'q') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 3);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 4, y);

				glVertex2f(x + 4, y);
				glVertex2f(x + 7, y - 3);

				glVertex2f(x + 4, y - 3);
				glVertex2f(x + 7, y);
				x += 8;
			} else if (c == 'r') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 6, y - 8);
				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 6, y - 4);

				glVertex2f(x + 6, y - 8);
				glVertex2f(x + 6, y - 4);

				glVertex2f(x + 2, y - 4);
				glVertex2f(x + 6, y);
				x += 7;
			} else if (c == 's') {
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 1, y - 4);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 7, y - 4);
				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y);

				glVertex2f(x + 7, y - 4);
				glVertex2f(x + 7, y);
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 2);
				x += 9;
			} else if (c == 't') {
				glVertex2f(x + 4, y);
				glVertex2f(x + 4, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				x += 8;
			} else if (c == 'u') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 7, y - 0);

				x += 8;
			} else if (c == 'v') {
				glVertex2f(x + 1, y - 3);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 3);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 3);
				glVertex2f(x + 4, y);
				glVertex2f(x + 7, y - 3);
				glVertex2f(x + 4, y);
				x += 9;
			} else if (c == 'w') {
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 7, y);

				glVertex2f(x + 4, y - 3);
				glVertex2f(x + 1, y);

				glVertex2f(x + 4, y - 3);
				glVertex2f(x + 7, y);

				x += 8;
			} else if (c == 'x') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);

				x += 8;
			} else if (c == 'y') {
				glVertex2f(x + 4, y);
				glVertex2f(x + 4, y - 4);

				glVertex2f(x + 4, y - 4);
				glVertex2f(x + 1, y - 7);
				glVertex2f(x + 1, y - 7);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 4, y - 4);
				glVertex2f(x + 7, y - 7);
				glVertex2f(x + 7, y - 7);
				glVertex2f(x + 7, y - 8);
				x += 8;
			} else if (c == 'z') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y - 8);

				x += 8;
			} else if (c == '1') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 5, y);

				glVertex2f(x + 3, y);
				glVertex2f(x + 3, y - 8);

				glVertex2f(x + 1, y - 6);
				glVertex2f(x + 3, y - 8);
				x += 7;
			} else if (c == '2') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 6, y);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 6, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 1, y - 6);

				glVertex2f(x + 6, y - 8);
				glVertex2f(x + 6, y - 5);
				glVertex2f(x + 6, y - 5);
				glVertex2f(x + 1, y);
				x += 8;
			} else if (c == '3') {
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 6, y - 8);
				glVertex2f(x + 1, y);
				glVertex2f(x + 6, y);

				glVertex2f(x + 6, y);
				glVertex2f(x + 6, y - 8);

				glVertex2f(x + 2, y - 4);
				glVertex2f(x + 6, y - 4);

				x += 8;
			} else if (c == '4') {
				glVertex2f(x + 1, y - 3);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 3);
				glVertex2f(x + 6, y - 3);

				glVertex2f(x + 6, y);
				glVertex2f(x + 6, y - 8);

				x += 7;
			} else if (c == '5') {
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 1);
				glVertex2f(x + 2, y);

				glVertex2f(x + 2, y);
				glVertex2f(x + 7, y);

				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 4);

				glVertex2f(x + 7, y - 4);
				glVertex2f(x + 1, y - 4);
				x += 8;
			} else if (c == '6') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y);
				glVertex2f(x + 7, y);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 6, y - 4);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 6, y - 8);

				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 3);
				glVertex2f(x + 7, y - 3);
				glVertex2f(x + 6, y - 4);
				x += 8;
			} else if (c == '7') {
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 7, y - 6);

				glVertex2f(x + 7, y - 6);
				glVertex2f(x + 1, y);
				x += 8;
			} else if (c == '8') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 1, y - 0);
				glVertex2f(x + 7, y - 0);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 7, y - 4);

				x += 8;
			} else if (c == '9') {
				glVertex2f(x + 7, y);
				glVertex2f(x + 7, y - 8);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 1, y - 8);

				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 7, y - 8);
				glVertex2f(x + 2, y - 0);
				glVertex2f(x + 7, y - 0);

				glVertex2f(x + 1, y - 4);
				glVertex2f(x + 7, y - 4);
				x += 8;
			} else if (c == '.') {
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 1);
				x += 2;
			} else if (c == '\'') {
				glVertex2f(x + 1, y - 6);
				glVertex2f(x + 1, y - 8);
				x += 2;
			} else if (c == '!') {
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 1, y - 3);
				glVertex2f(x + 1, y);
				glVertex2f(x + 1, y - 1);
				x += 2;
			} else if (c == ':') {
				glVertex2f(x + 1, y - 5);
				glVertex2f(x + 1, y - 7);
				glVertex2f(x + 1, y - 1);
				glVertex2f(x + 1, y - 3);
				x += 2;
			} else if (c == '?') {
				glVertex2f(x + 1, y - 6);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 1, y - 8);
				glVertex2f(x + 5, y - 8);
				glVertex2f(x + 5, y - 8);
				glVertex2f(x + 5, y - 5);
				glVertex2f(x + 5, y - 5);
				glVertex2f(x + 3, y - 5);
				glVertex2f(x + 3, y - 5);
				glVertex2f(x + 3, y - 3);
				glVertex2f(x + 3, y);
				glVertex2f(x + 3, y - 1);
				x += 6;
			} else if (c == ',') {
				glVertex2f(x + 1, y + 1);
				glVertex2f(x + 1, y - 1);
				x += 2;
			} else if (c == '\n') {
				y += 10;
				x = startX;
			} else if (c == ' ') {
				x += 8;
			}
		}
		glEnd();
	}
}